// SPDX-License-Identifier: GPL-2.0-or-later
// Copyright (c) 2023 Yevhen Babiichuk (DustDFG)

#ifndef _DOT_SORT_GAME_RULES_TUBE_HPP_
#define _DOT_SORT_GAME_RULES_TUBE_HPP_

#include <cstdint>
#include <vector>

class Tube
{
	private:
		const uint8_t size;
		std::vector<uint8_t> dots;

	public:
		Tube(uint8_t size);

		void push(uint8_t dot);
		void pop();

		bool isSuitableDot(uint8_t dot) const;

		bool isEmpty() const;
		bool isFull() const;
		bool isCompleted() const;

		uint8_t top() const;

		const std::vector<uint8_t>& getDots() const;
};
#endif
